// components/pay-dialog/pay-dialog.js
import {getPayQrcode, getPayStatus} from "../../service/pay";

Component({
  /**
   * 组件的属性列表
   */
  properties: {

  },

  /**
   * 组件的初始数据
   */
  data: {
    order_id:0,
    timer:0,
    showPay:false,
    qr_code_url:''
  },

  /**
   * 组件的方法列表
   */
  methods: {
    // 如果关闭了模态框, 那么就跳到订单详情
    toOrderInfo() {
      //先清除定时器
      clearInterval(this.data.timer)

      wx.redirectTo({
        url: '/pages/order_info/order_info?order_id=' + this.data.order_id,
      })
    },
    getPayQrcode(order_id){
      //利用data缓存一下order_id，因为其他地方可能要用
      this.setData({order_id})

      //由于没有企业的资质，暂时使用支付宝沙箱测试

      const data = {
        type: 'aliyun' // 使用支付宝支付, 因为微信不提供沙箱测试
      }
      getPayQrcode(order_id, data).then(payConfig => {
        // 真实的项目, 应该是请求微信的支付配置, 调用小程序api, 发起微信支付
        // wx.requestPayment({
        //     timeStamp: payConfig.timeStamp,
        //     nonceStr: payConfig.nonceStr,
        //     package: payConfig.package,
        //     signType: 'MD5',
        //     paySign: payConfig.paySign,
        //     success (res) {
        //         // 调用成功
        //         // 检查订单状态
        //     },
        //     fail (res) { }
        // })


        // 由于没有企业的资质, 暂时使用支付宝沙箱测试
        // 弹窗显示支付的二维码
        this.setData({
          showPay: true,
          qr_code_url: payConfig.qr_code_url
        })

        // TODO 监听支付状态, 如果支付成功, 跳到支付成功的页面
        const timer = setInterval(() => {
          getPayStatus(order_id).then(payStatus => {
            // 状态为 2 就是支付成功了, 跳到支付成功的页面
            if (payStatus == 2) {
              clearInterval(timer)
              wx.redirectTo({
                url: '/pages/pay_success/pay_success?order_id=' + order_id,
              })
            }
          })
        }, 2000)

        //将定时器索引设置给data,方便其他方法结束定时器
        this.setData({
          timer,
          showPay: true,
          qr_code_url: payConfig.qr_code_url
        })
      })
    }
  }
})
